【大数据】Hive 分区和分桶的区别及示例讲解

您所在的位置:网站首页 set off 与set out的区别 【大数据】Hive 分区和分桶的区别及示例讲解

【大数据】Hive 分区和分桶的区别及示例讲解

#【大数据】Hive 分区和分桶的区别及示例讲解| 来源: 网络整理| 查看: 265

一、概述

在大数据处理过程中,Hive是一种非常常用的数据仓库工具。Hive分区和分桶是优化Hive性能的两种方式,它们的区别如下:

1、分区概述

Hive分区是把数据按照某个属性分成不同的数据子集。

在Hive中,数据被存储在HDFS中,每个分区实际上对应HDFS下的一个文件夹,这个文件夹中保存了这个分区的数据。因此,在Hive中使用分区,实际上是将数据按照某个属性值进行划分,然后将相同属性值的数据存储在同一个文件夹中。Hive分区的效率提升主要是因为,当进行查询操作时,只需读取与查询相关的数据分区,避免了全表扫描,节约了查询时间。

Hive分区的主要作用是:

提高查询效率: 使用分区对数据进行访问时,系统只需要读取和此次查询相关的分区,避免了全表扫描,从而显著提高查询效率。降低存储成本: 分区可以更加方便的删除过期数据,减少不必要的存储。2、分桶概述

Hive分桶是将数据划分为若干个存储文件,并规定存储文件的数量。

Hive分桶的实现原理是将数据按照某个字段值分成若干桶,并将相同字段值的数据放到同一个桶中。在存储数据时,桶内的数据会被写入到对应数量的文件中,最终形成多个文件。Hive分桶主要是为了提高分布式查询的效率。它能够通过将数据划分为若干数据块来将大量数据分发到多个节点,使得数据均衡分布到多个机器上处理。这样分发到不同节点的数据可以在本地进行处理,避免了数据的传输和网络带宽的浪费,同时提高了查询效率。

分桶的主要作用是:

数据聚合: 分桶可以使得数据被分成较小的存储单元,提高了数据统计和聚合的效率。均衡负载: 数据经过分桶后更容易实现均衡负载,数据可以分发到多个节点中,提高了查询效率。

综上所述,分区和分桶的区别在于其提供的性能优化方向不同。分区适用于对于数据常常进行的聚合查询数据分析,而分桶适用于对于数据的均衡负载、高效聚合等方面的性能优化。当数据量较大、查询效率比较低时,使用分区和分桶可以有效优化性能。分区主要关注数据的分区和存储,而分桶则重点考虑数据的分布以及查询效率。

二、环境准备

如果已经有了环境了,可以忽略,如果想快速部署环境可以参考我这篇文章:通过 docker-compose 快速部署 Hive 详细教程

三、外部表和管理表

在Hive中,可以创建两种类型的表:外部表和管理表。它们之间的主要区别如下:

1、外部表1)外部表介绍

外部表是指在Hive中创建的表,实际上其数据是存储在外部文件系统(HDFS或本地文件系统)中的。

外部分区表是一种特殊类型的表,它们的数据存储在Hive之外的文件系统上,例如HDFS、S3等。对于外部分区表,Hive只会管理它们的元数据信息,而不会管理数据文件本身,这意味着,如果你使用Hive命令删除一个外部分区表,只会删除该表的元数据,而不会删除数据文件。外部分区表通常用于存储和管理原始数据,这些数据通常需要在多个系统和工具之间共享。2)示例讲解

【示例一】下面是创建Hive外部表的一个示例(数据存储在HDFS):

假设我们有一个存储在 HDFS 上的数据文件,其路径为'/user/hive/external_table/data',我们可以通过以下语句,在Hive中创建一个外部表:

# 登录容器 docker exec -it hive-hiveserver2 # 登录hive客户端 beeline -u jdbc:hive2://hive-hiveserver2:10000 -n hadoop # 建表 CREATE EXTERNAL TABLE external_table1 ( column1 STRING, column2 INT, column3 DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/user/hive/external_table/data';

在该表中,我们指定了表的各列的数据类型和分隔符等信息,并且使用了LOCATION 关键字来指定数据文件的存储位置。这样,在Hive中对该外部表进行查询操作时,Hive会自动去对应的位置读取数据文件,并据此返回查询结果。

load 数据

# 模拟一些数据 cat >data


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3